Short message service network plug-in

ABSTRACT

An apparatus for use with communication devices, the communication devices being configured to send and receive SMS messages, the apparatus includes a memory configured to store information indicative of the communication devices that are configured to process an SMS message of a first type, a processor configured to receive an SMS message of the first type from a first communication device, wherein the received SMS message includes contact information related to a user of the first communication device, analyze the received SMS message to determine information indicative of a destination address of the SMS message, the destination address corresponding to a second communication device, determine whether the second communication device is configured to receive SMS messages of the first type using the information indicative of the destination address and the information stored in the memory, send an outgoing SMS message to the second communication device wherein the outgoing SMS message is of the first type if it is determined that the second communication device is configured to receive SMS messages of the first type, and the outgoing SMS message is of a second type if it is determined that the second communication device is not configured to receive SMS messages of the first type.

CROSS-REFERENCE TO RELATED ACTIONS

Each of the following:

-   -   U.S. Provisional Application 60/862,453, filed Oct. 22, 2006;    -   U.S. Provisional Application 60/863,899, filed Nov. 1, 2006;    -   U.S. application Ser. No. 11/625,091, filed Jan. 19, 2007;    -   U.S. application Ser. No. 11/540,820, filed Sep. 28, 2006;    -   U.S. application Ser. No. 11/353,452, filed Feb. 13, 2006;    -   U.S. application Ser. No. 11/056,022, filed Feb. 11, 2005;    -   U.S. application Ser. No. 10/879,331, filed Jun. 29, 2004;    -   U.S. application Ser. No. 10/657,757, filed Sep. 8, 2003;        -   U.S. Pat. No. 6,374,259, filed Dec. 30, 1998; and    -   U.S. Application No. 60/102,614, filed Oct. 1, 1998;        is incorporated by reference herein to the extent that it is not        inconsistent with the present application. Furthermore, this        application claims priority to U.S. Provisional Application No.        60/863,899, filed Nov. 1, 2006, and U.S. Provisional Application        No. 60/862,453, filed Oct. 22, 2006, both of which are        incorporated by reference herein in their entirety. This        application is a continuation of U.S. Non-Provisional        application Ser. No. 11/689,915, filed Mar. 22, 2007, which is a        continuation-in-part of U.S. Non-Provisional application Ser.        No. 11/625,091, filed Jan. 19, 2007. Furthermore, U.S.        application Ser. No. 11/689,915 is incorporated by reference        herein in its entirety.

BACKGROUND

A phonebook of a mobile device typically plays a significant role inmobile communications. The phone book is typically a source of contactinformation for device calls, text messages, faxes, instant messages,and e-mails. One challenge in the mobile device market is inserting,updating, and maintaining contact information stored in the phonebook. Auser typically manually enters another person's contact information intothe user's mobile device. This takes time, is often difficult with smallbuttons and small screens on mobile devices, and can be prone to errorswith manual data entry. Often, the result is that many individuals donot enter contact information into their mobile phonebooks.

SUMMARY

In general, in an aspect, the invention provides an apparatus for usewith communication devices, the communication devices being configuredto send and receive short message service (SMS) messages, the apparatusincludes a memory configured to store information indicative of thecommunication devices that are configured to process an SMS message of afirst type, a processor configured to receive an SMS message of thefirst type from a first communication device, wherein the received SMSmessage includes contact information related to a user of the firstcommunication device, analyze the received SMS message to determineinformation indicative of a destination address of the SMS message, thedestination address corresponding to a second communication device,determine whether the second communication device is configured toreceive SMS messages of the first type using the information indicativeof the destination address and the information stored in the memory,send an outgoing SMS message to the second communication device whereinthe outgoing SMS message is of the first type if it is determined thatthe second communication device is configured to receive SMS messages ofthe first type, and the outgoing SMS message is of a second type if itis determined that the second communication device is not configured toreceive SMS messages of the first type.

Implementations of the invention may provide one or more of thefollowing features. The processor is configured to generate the outgoingSMS message using the contact information related to the user of thefirst communication device. The outgoing SMS message includesinformation indicative of the contact information related to the user ofthe first communication device. The SMS message of the first type is aformatted binary SMS message. The information indicative of the contactinformation related to the first user is formatted in a tag-length-valueformat. The SMS message of the second type is an unformatted text SMSmessage. The SMS message of the second type is a vCard SMS message. Theoutgoing message is a forward-a-contact message. The informationindicative of the contact information related to the first user isformatted using multiple text strings arranged in a predetermined formatsuch that the second communication device can identify a characteristicrelated to the information indicative of the contact information relatedto the first user. The processor is configured to process initializationrequests from the first communication device. The processor isconfigured to parse a type allocation code from the initializationrequest and to determine an operation mode of the first communicationdevice using the type allocation code and the information stored in thememory. The processor is configured to prepare an initializationresponse that includes information indicative of the operation mode andto send the initialization response to the first communication device.The processor is configured to process a statistical SMS messageincluding statistical information indicative of usage characteristics ofthe apparatus. The processor is configured to parse the informationincluded in the statistical SMS message and to store the information inthe memory.

In general, in another aspect, the invention provides a computer programproduct residing on a computer readable medium and comprising computerreadable instructions configured to cause a computer to access a memorystoring information indicative of communication devices that areconfigured to process an SMS message of a first type, receive an SMSmessage of the first type from a first communication device, wherein thereceived SMS message includes contact information related to a user ofthe first communication device, analyze the received SMS message todetermine information indicative of a destination address of the SMSmessage, the destination address corresponding to a second communicationdevice, determine whether the second communication device is configuredto receive SMS messages of the first type using the informationindicative of the destination address and the information stored in thememory, send an outgoing SMS message to the second communication devicewherein the outgoing SMS message is of the first type if it isdetermined that the second communication device is configured to receiveSMS messages of the first type, and the outgoing SMS message is of asecond type if it is determined that the second communication device isnot configured to receive SMS messages of the first type.

Implementations of the invention may provide one or more of thefollowing features. The computer readable instructions are furtherconfigured to cause the computer to generate the outgoing SMS using thecontact information related to the user of the first communicationdevice. The computer readable instructions are further configured tocause the computer to include information indicative of the contactinformation related to the user of the first communication device in theoutgoing SMS. The computer readable instructions are further configuredto cause the computer to generate a formatted binary SMS message as theSMS message of the first type. The computer readable instructions arefurther configured to cause the computer to format the informationindicative of the contact information related to the user of the firstcommunication device in a tag-length-value format. The computer readableinstructions are further configured to cause the computer to generate anunformatted text SMS message as the SMS message of the second type. Thecomputer readable instructions are further configured to cause thecomputer to format the information indicative of the contact informationrelated to the user of the first communication device using a pluralityof text stings arranged in a predetermined format such that the secondcommunication device can identify a characteristic related to theinformation related to the information indicative of the contactinformation related to the first user.

Implementations of the invention may further provide one or more of thefollowing features. The computer readable instructions are furtherconfigured to cause the computer to generate a vCard as the SMS messageof the second type. The computer readable instructions are furtherconfigured to cause the computer to generate a forward-a-contact messageas the outgoing SMS message. The computer readable instructions arefurther configured to cause the computer to process initializationrequests from the first communication device. The computer readableinstructions are further configured to cause the computer to parse atype allocation code from the initialization request and to determine anoperation mode of the first communication device using the typeallocation code and the information stored in the memory. The computerreadable instructions are further configured to cause the computer toprepare an initialization response that includes information indicativeof the operation mode and to send the initialization response to thefirst communication device. The computer readable instructions arefurther configured to cause the computer to process a statistical SMSmessage including information indicative of usage characteristics of thecomputer. The computer readable instructions are further configured tocause the computer to parse the information included in the statisticalSMS message and to store the information in the memory.

In general, in another aspect, the invention provides a method for usewith communication devices, the communication devices being configuredto send and receive SMS messages, the method including accessing amemory configured to store information indicative of communicationdevices that are configured to receive an SMS message of a first type,receiving an SMS message of the first type from a first communicationdevice, wherein the received SMS message includes contact informationrelated to a user of the first communication device, analyzing thereceived SMS message to determine information indicative of adestination address of the SMS message, the destination addresscorresponding to a second communication device, determining if thesecond communication device is configured to receive SMS messages of thefirst type using the information indicative of the destination addressand the information stored in the memory, sending an outgoing SMSmessage to the second communication device wherein the outgoing SMSmessage is of the first type if it is determined that the secondcommunication device is configured to receive SMS messages of the firsttype, and the outgoing SMS message is of a second type if it isdetermined that the second communication device is not configured toreceive SMS messages of the first type.

Implementations of the invention may provide one or more of thefollowing features. Sending the outgoing SMS message includes generatingthe outgoing SMS message using the contact information related to thefirst user of the first communication device. Sending the outgoing SMSmessage includes sending information indicative of the contactinformation indicative of the contact information related to the user ofthe first communication device. Generating the SMS message of the firsttype includes generating a formatted binary SMS message. The informationindicative of the contact information related to the first user isformatted in a tag-length-value format. Generating the SMS message ofthe second type includes generating an unformatted text SMS message. Theinformation indicative of the contact information related to the firstuser is formatted using a plurality of text strings arranged in apredetermined format such that the second communication device canidentify a characteristic related to the information indicative of thecontact information related to the first user.

Implementations of the invention may further provide one or more of thefollowing features. Generating the SMS message of the second typeincludes generating an SMS message that includes information indicativeof a vCard. Sending the outgoing SMS message includes generating aforward-a-contact message. The method further includes processinginitialization requests from the first communication device. The methodfurther includes parsing a type allocation code from the initializationrequest and determining an operation mode of the first communicationdevice using the type allocation code and the information stored in thememory. The method further includes preparing an initialization responsethat includes information indicative of the operation mode and sendingthe initialization response to the first communication device. Themethod further includes processing a statistical SMS message includinginformation indicative of usage characteristics of the communicationdevices. The method further includes parsing the information included inthe statistical SMS message and storing the information in the memory.

Various aspects of the invention may provide one or more of thefollowing capabilities. Embodiments of the invention can providesystems, methods, and communication enhancements to automaticallytransfer (e.g., send, insert, and exchange) a caller's contactinformation into a user's phonebook using Short Message Service (SMS)messages. A network plug-in can be configured to work with existingcellular communication networks. A network plug-in can automaticallydetermine whether a communication device is configured to send specifictypes of SMS messages. A network plug-in can automatically set anoperation mode of a communication device. A network plug-in canautomatically determine whether a communication device can receive aspecific type of SMS message. A network plug-in can convert from one SMSmessage type to another. The network plug-in can determine when it isdesired to convert a format of an SMS message received from a firstcommunication device prior to sending it to a second communicationdevice. The network plug-in can receive and process initializationrequests from communication devices. The network plug-in can receive andprocess SMS messages containing statistics.

These and other capabilities of the invention, along with the inventionitself, will be more fully understood after a review of the followingfigures, detailed description, and claims.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a schematic of a communication system including communicationdevices.

FIG. 2 is a profile setup dialog.

FIGS. 3 a-3 b are diagrams of a profile confirmation message.

FIG. 4 is a schematic of a communication system including communicationdevices.

FIG. 5 is a diagram of SMS messages being sent from a communicationdevice to a network plug-in.

FIG. 6 is a diagram of a portion of an information packet.

FIG. 7 is a diagram of a portion of an information packet.

FIG. 8 is a diagram of a portion of an information packet.

FIG. 9 is a diagram of a portion of an information packet.

FIG. 10 is a table of information contained in a sub-portion of theinformation packets shown in FIGS. 8-9.

FIG. 11 is a schematic of a communication system including communicationdevices.

FIG. 12 is a block flow diagram of a process of processing an incomingSMS message.

FIG. 13 is a block flow diagram of a process for performing centralizedblacklist processing.

FIG. 14 is a block flow diagram of a process for processing contactinformation included in a formatted SMS message.

FIG. 15 is a block flow diagram of a process for SMS messagetransformation.

FIG. 16 is a block flow diagram of a process for SMS messagetransformation.

FIG. 17 is a table of information contained in a sub-portion of theinformation packets shown in FIGS. 6-7.

FIG. 18 is a block flow diagram of a process for appending a phonenumber to an SMS message.

FIG. 19 is a block flow diagram of a process for E-mail texttransformation.

FIG. 20 is a block flow diagram of a process for appending an E-mailaddress to an SMS message.

FIG. 21 is a block flow diagram of a process for receiving andprocessing SMS messages including statistical information.

DETAILED DESCRIPTION

Embodiments of the invention provide techniques for sharing contactinformation between users of mobile communications devices.Specifically, a mobile communication device prompts a first user toprovide the first user's contact information to a second user's mobiledevice. If the first user elects to provide contact information to thesecond user, the first user's communication device generates ashort-message-service (SMS) message and sends the SMS message to aservice provider. The service provider analyzes the SMS message,including the destination address of the second user's communicationdevice, to determine if the second user's communication device has theappropriate software and/or configuration to receive formatted SMSmessages. If the second user's communication device is configured toreceive formatted SMS messages that include contact information, theservice provider sends a formatted SMS message to the second deviceincluding the first user's contact information. If the secondcommunication device is not configured to receive formatted SMSmessages, then the service provider sends an unformatted SMS message tothe second user's communication device that includes the first user'scontact information. Other embodiments are within the scope of theinvention.

Referring to FIG. 1, a system 1005 includes communication devices 1010and 1020, a CallerXchange network plug-in 1040, and a service provider1055. The communication devices 1010 and 1020 are portable communicationdevices such as a cell-phone, a Blackberry®, a personal digitalassistant (PDA), a personal computer, a cordless land-line based phone,etc., although other communication devices can be used with the system1000. The communication devices 1010 and 1020 are configured to providecommunication service via, for example, a mobile phone service providedby the mobile operator (e.g., using a terrestrial cellular communicationnetwork, a satellite-based communication network, a Universal MobileTelecommunications System (UMTS), a Global System for MobileCommunications (GSM) system, a code division multiple access (CDMA)system, a time division multiple access (TDMA) system, etc.). While twoof the communication devices 1010 and 1020 are shown, other quantitiesof communication devices are possible. The communication devices 1010and 1020 are configured to include Universal Subscriber Identity Modules((U)SIMs) and/or device phonebooks that are configured to receive andstore information.

Each of the communication devices preferably includes an InternationalMobile Equipment Identity (IMEI). The IMEI number is typically a uniquenumber that is associated with certain types of the communicationdevices (e.g., GSM and UMTS devices). The IMEI number includesinformation that is indicative of the origin, model, and serial numberof the communication device. One portion of the IMEI number is the typeallocation code (TAC) value. The TAC value is typically an 8-digitportion of the IMEI code that is indicative of the origin and model ofthe communication device. While the present application described usingthe IMEI number to perform certain functions, other identificationconventions can be used.

The communication devices 1010 and 1020 include CallerXchangeapplication modules 1015 and 1025, respectively. The application modules1015 and 1025 are included in the (U)SIM of the communication devices1010 and 1020, respectively, although other configurations are possible(e.g., the applications modules 1015 and 1025 can be located on anoperating system of the communication devices 1010 and 1020 and/or behosted on a remote server). The application modules 1015 and 1025 areconfigured to provide for automatic exchange and/or storage of users'contact information (as described more fully below). The serviceprovider 1055 is configured to provide SMS service to the communicationdevices 1010 and 1020 (e.g., by providing store-and-forward service).The service provider 1055 can be, for example, a mobile operator shortmessage service center (SMSC).

While the following discussion focuses on the operation of thecommunication device 1010, the operation of other communication devicesis preferably similar. Furthermore, while the following discussion usesthe communication device 1010 as a point of reference (e.g., thecommunication device 1010 initiates a transaction), other communicationdevices can be used as a point of reference in a similar manner.

The communication device 1010 is configured to prompt users of thecommunication device 10 to provide contact information (e.g., worktelephone number(s), home telephone number(s), fax number(s), e-mailaddresses(s), etc.) for storage in the communication device 10, orelsewhere. The communication device 1010 is configured to prompt a userto provide contact information during an initial setup phase (e.g.,shortly after purchasing the communication device 10), although the usercan be prompted to provide information at other times (e.g., atpredetermined intervals). The communication device 1010 is configured tostore the user's contact information, for example, within the (U)SIM ofthe communication device 1010, and/or remotely (e.g., on thecommunication system and/or within a remote server). The communicationdevice 1010 is configured to prompt the user to categorize the contactinformation provided by the user of the communication device 1010. Forexample, the user can be prompted to categorize individual pieces ofcontact information as being personal, work, primary, secondary,traveling, etc.

Referring to FIG. 2, a profile initialization sequence is shown. Theprofile setup process is preferably a linear process, and is preferablyinvoked after every startup of the device, until the setup process iscomplete, although the setup process can be invoked at other times.During the setup process, the application module 1015 is configured toprompt the user to input the following information: FirstName: [Jane(enter user name)], LastName: [Doe (enter user name)], MobileNumber:[+19995551212 (enter/change MobileNumber)], HomeNumber: [+19995551213(enter HomeNumber or leave blank)], WorkNumber: [+19995551214 (enterWorkNumber or leave blank)] and Email: [jane.doe@domain.com]. Theapplication module 1015 can be configured such that some of the fieldsare mandatory. The application module 1015 can be configured to promptthe user to provide additional information (e.g., assistant information,spouse information, etc.). Referring also to FIGS. 3 a and 3 b, once theprofile initialization is complete, the information contained therein ispreferably displayed for confirmation. For example, the personal profileis preferably displayed as Personal Profile: [Jane Doe], M:[+19995551212], H: [+19995551213] and jane.doe@domain.com, and thebusiness profile as Business Profile: [Jane Doe], M: [+19995551212], W:[+19995551214] and jane.doe@domain.com.

The application modules 1015 and 1025 are configured to provide forautomatic transmission, reception, and/or storage of user informationbetween users of the communication devices 1010 and 1020. For example,the application module 1015 is configured to, at predetermined times(e.g., upon completion of a call between the communication devices 1010and 1020), automatically prompt the user of the communication device1010 to provide the user of the communication device 1020 with thecontact information of the user of the communication device 1010. Theapplication module 1015 is configured to prompt the user of thecommunication device 1010 to choose some or all of the stored contactinformation to send to the user of the communication device 1020 (e.g.,the user of the communication device 1010 can choose only to provide“work information” to the user of the communication device 1020). Theapplication module 1025 is configured to cause the communication devices1020 to automatically receive the user's (of the communication device1010) contact information and to automatically prompt the user of thecommunication device 1020 to store the received contact information intothe (U)SIM and/or device phonebook of the communication device 1020after a communication event has concluded. The application modules 1015and 1025 are configured to provide information to other communicationdevices using SMS messaging, although other information transfer methodscan be used such as TCP/IP. If the application module 1025 is notenabled on the communication device 1025, the communication device 1025preferably receives information from the communication device 1010 as anunformatted text SMS message in an inbox with the sending user's contactinformation.

The application module 1015 is configured to send different types of SMSmessages depending on the capabilities of the communication device 1020.For example, the application module 1015 is configured to send either anunformatted text SMS message, a formatted binary SMS message, and/orvCard that includes the contact information associated with thecommunication device 1010. Preferably a default of the applicationmodule 1015 is to send a formatted SMS message (e.g., as describedbelow) to the service provider 1055. The service provider 1055 isconfigured to determine if the SMS message should be sent to the networkplug-in where the SMS message can be counted and converted, if desired,to either a formatted binary SMS message, an unformatted text SMSmessage, or a vCard, depending on, for example, if the communicationdevice 1020 includes the application module 1025 or not, and if theapplication module 1025 is in an active operation mode. The unformattedtext SMS messages and the formatted SMS messages are preferably similarto those described in U.S. patent application Ser. No. 11/625,091,although other configurations are possible.

Referring to FIG. 4, a mobile contact management information system 1000includes the communication devices 1010 and 1020, a communication device1030, a mobile operator network 1050, a MobileStats repository 1080, adisplay 1082, and a mobile operator network 1090. The contact managementinformation system 1000 is, for example, a UMTS Mobile Operator Network.The system 1000, however, can also be another type of mobile network,such as WCDMA (GSM), CDMA, CDMA2000, next generation phone system, etc.The communication devices 1010, 1020, and 1030 include applicationmodules 1015, 1025, and 1035, respectively. The application modules1015, 1025 and 1035 can be located, for example, on an operating systemof the communication devices 1010, 1020 and 1030, respectively, or canbe located within the (U)SIM card of the communication devices 1010,1020 and 1030, respectively. The application modules 1015, 1025, and1035 are configured to communicate with the network plug-in 1040 via SMSmessages. The communication device 1030 is configured to operate on thenetwork 1090 which is, for example, an outside mobile service provider'snetwork, although other configurations are possible. The network 1050 isconfigured to communicate with the repository 1080 via a secure datatransfer link 1062, which is, for example, a secure network connection.The repository 1080 can be located in a location remote from the network1050. The repository 1080 is coupled to the display 1082 via a securedata transfer link 1064, which is, for example, a secure networkconnection. The display 1082 is configured to display MobileStatsreports 1085 generated using information stored in the repository 1080.

The network 1050 includes the network plug-in 1040, a blacklist database1042, a mobile station international subscriber directory number(MSISDN) database 1044, a statistics storage 1046, and the serviceprovider 1055. The network plug-in 1040, the blacklist database 1042,the MSISDN database 1044, and the statistics storage 1046 are coupledtogether via, for example, a network connection. The network plug-in1040 and the service provider 1055 are configured to communicate using ashort message peer-to-peer (SMPP) protocol and/or short messageapplication part (SMAP) via a network such as the Internet or a privateTCP/IP network, although other protocols and/or physical layers can beused. The blacklist database 1042 is configured to store informationindicative of devices that do not comply with a desired mobile networkstandard (e.g., communication devices that do not accept formatted SMSmessages and/or do not support SIM Toolkit (STK) standards). Preferably,the blacklist database 1042 is populated prior to deployment of thenetwork plug-in 1040. The statistics storage 1046 is configured tocommunicate with the repository 1080 using the secure data transfer link1062.

The system 1000 can be configured to generate a MobileStats report 1085on the display 1082. The system 1000 can be configured such that theMobileStats report 1085 is generated at predetermined times (e.g., oncea week), or at the request of an external user. The MobileStats report1085 can include various pieces of information. For example, theMobileStats report 1085 can include statistics such as the number oftimes a user sent, inserted, and/or updated their profile, the number oftimes the user declined a “send now” and/or “insert profile” prompt, thenumber of SMS's sent including a personal profile, the number of SMS'ssent including a business profile, the percentage of time users sentinformation, the number of contact information fields sent within anSMS. The system 1000 can also be configured to track additionalstatistics/usage characteristics such as:

-   -   Number of Send my profile questions    -   Number of Send Update questions    -   Number of my profile SMS messages sent    -   Number of my profile SMS Update messages sent    -   Number of my profile SMS messages received    -   Number of entries contacts added to the phonebook    -   Number of additional number added to the phonebook    -   Number of e-mails added to the phonebook    -   Number of add questions accepted by user    -   Number of contacts updated in the phonebook    -   Number of entries updated in the phonebook    -   Number of additional numbers updated in the phonebook    -   Number of update questions accepted by user    -   Base phonebook size (e.g., total number of entries stored prior        to CallerXchange being run the first time)    -   Base phonebook additional number count (e.g., total number of        additional phone numbers stored prior to application being run        the first time)    -   Base phonebook e-mails count (e.g., total number of emails        stored prior to application being run the first time)    -   Base phonebook size (e.g., total number of entries stored prior        to application installation)    -   Phonebook size (e.g., total number of contacts currently stored)    -   Phonebook additional number count    -   Phonebook e-mail count    -   Number of phonebook records created    -   Number of phonebook records updated    -   Application status        -   Send: Enabled/Disabled        -   Receive: Enabled/Disabled    -   TAC of handset (e.g., 4 bytes)    -   Application Operation Mode        -   Receive/Send        -   Send/Receive    -   Application version    -   Activation date and time    -   Number of times contact forwarded (e.g., the number of times a        contact within the phonebook is forwarded using the        Forward-A-Contact function)    -   Number of times a contact added to the phonebook via the        application is called—counter preferably increments after any        call to the number is placed (even if call does not “connect”)    -   Number of times a contact added to the phonebook via application        is sent an SMS-Counter preferably increments after an SMS is        sent to a number in the phonebook added via CallerXchange.        Other information and usage traits can be tracked as well.

The network plug-in 1040 can be configured to automatically collectMobileStats information. For example, the application modules 1015,1025, and 5115 are configured to collect the desired information used togenerate the MobileStats report 1085. The application modules 1015,1025, and 5115 are configured store the collected information on the(U)SIM card of each respective communication device, although otherstorage locations are possible. The network plug-in 1040 is configuredto request information (e.g., the phone numbers of users connected tothe network 1050) from the MSISDN database 1044. The network plug-in1040 is configured to conduct an SMS campaign by sending a request forthe desired MobileStats information to each of the application modulesconnected to the network 1050. The application modules are eachconfigured to prepare an SMS message (e.g., the MobileStats SMS messagediscussed below) that contains the desired statistics, and to send theSMS message to the network plug-in 1040. The network plug-in 1040 isconfigured to parse the received MobileStats information and to send thecollected statistics to the MSISDN database 1044 for storage. Thenetwork plug-in 1040 can be configured to automatically repeat theMobileStats collection process as desired.

Referring also to FIG. 5, exemplary types of SMS messages between theapplication module 1015 and network plug-in 1040 are shown. For example,there are preferably multiple types of SMS messages from the applicationmodule 1015 to the network plug-in 1040. First, the application module1015 is configured to register the MSISDN of the communication device1010 with the network plug-in 1040 (e.g., in the database 1044) bysending a provisioning SMS message 1456 to the network plug-in 1040,e.g., once the application module 1015 starts properly. Preferably, theprovisioning request is a formatted SMS message. The network plug-in1040 is configured to check if the communication device 1010 conforms tostandards used by the network 1050 using the provisioning requestmessage 1456. Second, the application module 1015 is configured to sendcontact information associated with the communication device 1010 toother users using a contact information SMS message 1457. Third, theapplication module 1015 is configured to send usage statistics collectedby the application module 1015 via a MobileStats SMS message 1458.

Referring to FIGS. 6-9, exemplary SMS message information packets areshown. SMS messages are preferably comprised of a TransmissionProtocol-Data Unit (TP-DU) which contains the SMS message header and theTransmission Protocol-User Data (TP-UD). Referring also to FIG. 4, whenthe application module 1015 sends an SMS message to the applicationmodule 1025, an SMS-Submit is created and sent to the service provider1055. The service provider 1055 is configured to receive the SMS-Submitand to convert it into an SMS-Deliver message. Preferably, at least aportion of the SMS message header of the SMS-Submit and SMS-Delivermessages are different, though other configurations are possible. TheSMS-Submit messages and the SMS-Deliver messages can be in the form of,for example, unformatted text SMS messages and/or formatted binary SMSmessages.

Referring to FIG. 6, an unformatted text SMS message-Submit TP-DU 2110includes, inter alia, an SMS-Submit header 2140, and a TP-UD 2160. TheSMS -Submit header 2140 is configured to include a Protocol Identifier(PID) value 2142, a Data Coding Scheme (DCS) value 2144, and adestination address 2144. The TP-UD 2160 is configured to store thecontent of the SMS message. For example, the TP-UD 2160 is configured tocontain up to 140 bytes. The PID value 2142 preferably serves as anindicator of the type of message being sent. Preferably, 0x00, serves asthe default value for the text SMS messages. For example, if the sendingdevice sets the PID value to 0x00, the receiving device can beconfigured to detect that this is a text SMS message. The DCS value 2144preferably indicates the designation of the SMS message. For example,setting the DCS value 2144 to 0x12 (7-bit SMS alphabet (U)SIM-specificmessage) indicates that the SMS message's designation is the (U)SIM. Ifthe DCS value is not equal to 0x12, then the receiving communicationdevice is configured store the text SMS message elsewhere (e.g., in anEFSMS elementary file). The application module 1015 can be configured toassemble the TP-UD 2160 (e.g., as shown in FIG. 17 and described in U.S.application Ser. No. 11/625,091).

Referring to FIG. 7, an unformatted text SMS-Deliver message TP-DU 2210includes, inter alia, an SMS-Deliver header 2240, and a TP-UD 2260. TheSMS-Deliver header 2240 is configured to include a PID 2242, a DCS 2244,and an originating address 2246. The TP-UD 2260 is configured to storethe content of the SMS message. For example, the TP-UD 2260 isconfigured to contain up to 140 bytes. The service provider 1055 ispreferably configured to convert an incoming SMS-Submit (e.g., theSMS-Submit message 2110) into a SMS-Deliver (e.g., the SMS-Delivermessage 2210), without substantially changing the substantive content ofthe TP-UD 2160. The service provider 1055 is configured to convert theTP-UD 2160 into the TP-UD 2260 as is (e.g., the information contained inthe TP-UD 2160 is substantially unchanged). The network plug-in 1040 canbe configured as a stand-alone server and/or can be integrated into theservice provider 1055. The SMS-Deliver message 2210 can be assembled asdescribed in FIG. 17 and described in U.S. application Ser. No.11/625,091.

Referring to FIG. 8, a formatted binary SMS-Submit message TP-DU 2310includes, inter alia, an SMS header 2340, and a TP-UD 2360. The SMSmessage header 2340 includes a PID 2342, a DCS 2344, and a destinationaddress 2346. The TP-UD 2360 includes an STK Security Header 2367 and asecured data 2365. The STK Security Header 2367 is configured to containa Toolkit Application Reference (TAR) value 2368. The applicationmodules 1015, 1025, and 1035 are loaded on the (U)SIM with a TAR value2368 that is associated with the respective application module. Theapplication module 1015 is configured to dynamically assign differentTAR values 2368 depending on the message type. There is, however,preferably a single TAR value 2368 for each outgoing formatted binarySMS message, although other configurations are possible. The applicationmodule 1015 is configured to use the TAR values to communicate with aremote server component that is configured to provide additionalintelligence and processing ability. For example, the application module1015 is configured to submit a communication to the network plug-in 1040via the service provider 1055 prior to the delivery of an SMS message tothe application module 1025. The application module 1015 can beconfigured to assemble the TP-UD 2160 (e.g., as shown in FIG. 17 anddescribed in U.S. application Ser. No. 11/625,091).

Referring to FIG. 9, a formatted binary SMS-Deliver message TP-DU 2410includes, inter alia, an SMS message header 2440, and a TP-UD 2460. TheSMS message header 2440 includes a PID 2442, a DCS 2444, and anoriginating address 2446. The TP-UD 2460 includes a SIM Tool Kit (STK)Security Header 2467 and a secured data 2465. The STK Security Header2467 is configured to contain a TAR value 2468. The application module1015 is configured to dynamically assign different TAR values 2468depending on the message type. There is, however, preferably a singleTAR value 2468 for each incoming formatted binary SMS message, althoughother configurations are possible. For example, the communication devicecan recognize that an incoming message is a CallerXchange SMS message bythe TAR value included in the message. The originating address 2446 ofthe formatted binary SMS-Deliver message is preferably the onlycomponent within the SMS message header 2440 that substantively differsfrom the formatted binary SMS-Submit message header 2440, which containsa destination address 2446 instead. The service provider 1055 receivesthe formatted binary SMS-Submit message and sends it to the networkplug-in 1040 for the processing. The SMS-Deliver message 2410 can beassembled as described U.S. application Ser. No. 11/625,091.

Referring to FIGS. 4-5, the network plug-in 1040 is configured toprocess SMS messages from the communication devices 1010, 1020, and1030. The network plug-in 1040 is configured to receive an SMS messagefrom the communication device 1010. The network plug-in 1040 isconfigured to examine the incoming TAR value (e.g., the TAR value 2368)to determine whether the incoming SMS message is a provisioning request(e.g., the provisioning request message 1456), a contact information SMSmessage (e.g., the contact information processing SMS message 1057), oran SMS message including MobileStats information (e.g., the MobileStatsSMS message 1458).

The service provider 1055 is configured to convert SMS-Submit messages(e.g., the formatted SMS-Submit 2310) into SMS-Deliver messages (e.g.,the SMS-Deliver message 2410). Thus, in typical operation of the system1000, the communication device 1010 sends a SMS-Submit message to theservice provider 1055, the service provider 1055 converts the SMS-Submitmessage to an SMS-Deliver message, and provides the SMS-Deliver messageto the network plug-in 1040. Likewise, in typical operation of thesystem 1000, the service provider 1055 receives an SMS-Submit messagefrom the network plug-in 1040, converts the SMS-Submit message to anSMS-Deliver message, and provides the SMS-Deliver message to theintended recipient (e.g., the communication device 1020).

To process an incoming provisioning request message 1456, the networkplug-in 1040 is configured to perform an initialization procedure. Forexample, the network plug-in 1040 is configured to perform multipletasks upon receiving the provisioning request message 1456. The networkplug-in 1040 is configured check if the communication device 1010 islisted in the blacklist database 1042 by checking, for example, the TACvalue stored in the communication device 1010. The network plug-in 1040is configured to register the operation mode of the first userapplication module 1015 within the MSISDN database 1044. The networkplug-in 1040 is configured to determine if the application module 1015complies with STK standards. In addition to when an incomingprovisioning request is received, the network plug-in 1040 can also beconfigured to perform the initialization procedure at other times, e.g.,upon receiving a request from an International Mobile Equipment Identitytracking provider.

The network plug-in 1040 is configured to determine if the communicationdevice 1010 is listed in the blacklist database 1042 and to create aprovisioning response. The network plug-in 1040 is configured to extracta TAC value from the provisioning request SMS message 1456 (e.g., fromthe TP-UD portion of the provisioning request). The network plug-in 1040is configured to search the blacklist database 1042 using the TAC valueas a key. The network plug-in 1040 is configured create a provisioningresponse that indicates to the application module 1015 that it shouldset its operation mode to “Disable” or “Receive and Send” when the TACvalue is found in the blacklist database 1042. The network plug-in 1040is configured to create a provisioning response that indicates to theapplication module 1015 that it should set its operation mode to “Sendand Receive” when the TAC value is not found in the blacklist database1042. Using a provisioning response received from the network plug-in1040, the application module 1015 is configured to store the last TACvalue of the communication device 1010, and to, if the stored value isthe same during subsequent startups, (e.g., if the user did not upgradeto a new communication device) skip requesting that the network plug-in1040 check the blacklist database 1042.

The network plug-in 1040 is configured to create the provisioningresponse and to send the provisioning response to the application module1015. The network plug-in 1040 is configured to include in theprovisioning response information that is indicative of the TAC value ofthe communication device 1010 along with information indicative of theoperation mode of the communication device 1010. The network plug-in1040 is configured to prepare the provisioning response, for example,using a Tag-Length-Value (TLV) format (e.g., as shown in FIG. 10, and asdescribed in U.S. application Ser. No. 11/625,091). The network plug-inis configured to create a tag portion of the TLV string using asingle-octet identifier which identifies a parameter (e.g., a TAC valuefield). The network plug-in 1040 is configured to create a lengthportion of the TLV string using a single-octet indicating the length ofthe corresponding value portion of the TLV string in octets, preferablynot including the type and length fields. The network plug-in 1040 isconfigured to create a value portion of the TLV string that is 1 to 32octets in length that, for example, contains the specific value for theparameter (e.g., a TAC value). The network plug-in 1040 is configured toconcatenate multiples TLV strings. The network plug-in 1040 isconfigured to create a secure SMS message (e.g., according to the 3GPPTechnical Specification 03.48), and embed the provisioning response(e.g., one or more TLV strings) in the secure data part of the SMSmessage (e.g., the TP-UD 2360). The network plug-in 1040 is configuredto send the secure SMS message to the communication device 1010.

The network plug-in 1040 is further configured to update the MSISDNdatabase 1044. The network plug-in 1040 is configured to storeinformation in the MSISDN database 1044 that is indicative, for example,of whether the application module 1015 is enabled or disabled for agiven MSISDN. The network plug-in 1040 is also configured to storeoperation mode information related to the application module 1015 (e.g.,in the one of the databases 1042, 1044, and/or 1046).

The network plug-in 1040 is configured to make available CallerXchangeusage information. The network plug-in 1040 is configured to send usageinformation to a server, and/or to advertise that new information isavailable for retrieval at a given storage location (e.g., at adatabase). The server can be part of a mobile operator's network, or belocated elsewhere.

To process an incoming MobileStats SMS message 1458, the network plug-in1040 is configured provide information than can be used to produce theMobileStats reports 1085. The network plug-in 1040 is configured toretrieve the TLV-coded secure data part of the MobileStats SMS message1458. The network plug-in 1040 is configured to parse the TLV elementsfrom the MobileStats SMS message 1458 and create a new entry in thestatistics storage 1046 that includes the information parsed from theMobileStats SMS message 1458. The network plug-in 1040 is configured tosend a notification to the repository 1080 indicating that one of theMobileStats SMS message 1458 was received. The notification can be sentto the repository 1080 simultaneously with the parsing of theMobileStats SMS message 1458, and/or at other times. The network plug-in1040 is configured to store the originating address (e.g., an address ofthe communication device 1010), a time stamp of the SMS message 1458,and TLV values contained in the SMS message 1458 in the statisticsstorage 1046. The MobileStats reports 1085 can be generated using theinformation contained in the storage 1046. The network plug-in 1040 canbe configured to perform additional tasks upon receipt of the SMSmessage 1458.

To process an incoming contact information SMS message 1457, the networkplug-in 1040 is configured to facilitate the sharing of contactinformation contained therein. The network plug-in 1040 is configured toreceive an SMS-Deliver message (e.g., the SMS-Deliver message 2410) fromthe service provider 1055. The network plug-in 1040 is configured totransform the SMS-Deliver message received from the service provider1055 to the SMS-Submit message (e.g., the SMS-Submit 2310), e.g., byincluding an originating address in the SMS-Submit message. Theremainder of this portion of the description assumes that theSMS-Deliver message 2410 is received by the network plug-in 1040,although other SMS message types can be received and processed.

The network plug-in 1040 is configured to convert the SMS-Delivermessage 2410 into an SMS-Submit message (e.g., the SMS-Submit message2310). The network plug-in 1040 is configured to create a securityheader of the SMS-Submit message 2310 according to the 3GPP TechnicalSpecification. The network plug-in 1040 is configured to copy the TLVvalues from the secured data 2465 of the SMS-Deliver message 2410 to thesecured data 2365 of the SMS-Submit message 2310. The network plug-in1040 is configured to encapsulate the SMS-Submit message 2310 within theSMPP protocol prior to sending it to the service provider 1055. Thenetwork plug-in 1040 can be configured to add a user's originatingaddress (e.g., the address of the communication device 1010) to theSMS-Submit message 2310, or can be configured not to add the user'soriginating address. For example, the network plug-in 1040 can beconfigured to append the originating address 2446 to the secured data2365 of the SMS-Submit message 2310, for example, as a TLV field (e.g.,TVL_(OA)) that is configured to be a TLV representation of theoriginating address.

Referring to FIG. 11, a mobile contact management information system5000 includes communication devices 1010, 1020, 1031, and 5015, thenetwork 1050, the repository 180, and the display 1082. Thecommunication device 5015 includes an application module 5115. Theapplication modules 1015 and 1025, 5115 are configured to communicatewith the network plug-in 1040 using SMS messages. The system 5000 is,for example, a UMTS Mobile Operator Network. The system 5000, however,can be another type of mobile network, such as WCDMA (GSM), CDMA,CDMA2000, etc., or a next generation phone system.

The network plug-in 1040 is configured to process a formatted binary SMSmessage at predetermined times such as when a communication event (e.g.,a telephone call, an SMS message, etc.) between the first and secondusers (e.g., using the communication devices 1010 and 1020) isconcluded. After terminating the call, at least one of the first andsecond users is automatically prompted to provide contact information tothe other user. For example, after termination of the call, the firstuser is automatically prompted to provide the first user's contactinformation to the second user. One or both parties to the call can beautomatically prompted to provide contact information to the othercaller. For example, only the caller who initiated the call can beprompted, only the caller who received the call can be prompted, bothcallers can be prompted, etc. The below discussion assumes that thefirst user is the user that is prompted to provide contact informationafter terminating the call.

The application module 1015 is configured to prompt the first user toselect whether or not to provide contact information to the second user,and to select which contact information, if any, to provide to thesecond user. The application module 1015 is configured to prompt thefirst user to choose whether or not to provide contact information tothe second user by, for example, providing a prompt on a display of thecommunication device 1010. The application module 1015 is alsoconfigured to prompt the first user to choose a specific set of contactinformation to provide to the second user (e.g., work only, home only,assistant only, work and home, etc.). If the first user chooses toprovide contact information, the application module 1015 retrieves thefirst user's contact information (e.g., from the SIM in thecommunication device 1010). The application module 1015 preferablyretrieves only the desired information, e.g., only “work” information.The application module 1015 is configured to generate and send aformatted binary SMS-Submit message 2310 (e.g., shown as SMS message5110) to the communication device 1020 (although an unformatted text SMSmessage, as described below, can also be sent).

The system 5000 is configured such that before the SMS message 5110 istransmitted to another communication device, the generated SMS messagepreferably goes through intermediate processing by the network 1050. Theservice provider 1055 is configured to convert the SMS message 5110(e.g., which is the SMS-Submit message 2310) to the SMS-Deliver message2410 (e.g., shown as message 5140) and to provide the message 5140 tothe network plug-in 1040. The service provider 1055 is configured toencapsulate the SMS message 5140 using SMPP protocol prior to sendingthe message 5140 to the network plug-in 1040. The network plug-in 1040is configured to gather desired information and convert the SMS message5140 from the SMS-Deliver message 2410 to the SMS-Submit message 2310(e.g., shown as message 5150). Preferably, the network plug-in 1040 isconfigured to not substantially change the TP-UD portion of the SMSmessage 5140 when converting it to the TP-UD portion of the SMS message5150. The network plug-in 1040 is configured to encapsulate the binarySMS-Submit message using the SMPP protocol and to send the SMS message5150 to the service provider 1055. The service provider 1055 isconfigured to receive the SMS 5150 and forward it to the second usercommunication device 1020 as an SMS-Deliver message 2410 (e.g., shown asmessage 5120).

The type of SMS message (e.g., unformatted text SMS or formatted binarySMS) sent to and/or from the application modules and the network plug-in1040 can vary. For example, the message type can be set during theinitial configuration of the respective application modules by a mobilenetwork operator. The message types sent and/or received can be anycombination of unformatted text SMS messages and formatted binary SMSmessages. Formatted binary SMS messages, however, are the preferredmethod of communication.

The system 5000 is also configured to receive and send SMS messages toand/or from communication devices that do not include an applicationmodule. The below discussion assumes that a fourth user is the user thatis prompted to provide contact information to a third user afterterminating a communication event, although other configurations arepossible. Similar to above, after the termination of a communicationevent, here between the third and fourth users (e.g., using thecommunication devices 1031 and 5105, respectively), the fourth user isprompted to provide contact information to the third user. Theapplication module 5115 is configured to prompt the fourth user tochoose whether or not to provide contact information to the third user.The application module 5115 is also configured to prompt the fourth userto choose a specific set of contact information to provide to the thirduser (e.g., work only, home only, assistant only, work and home, etc.).If the fourth user elects to provide contact information, theapplication module 5115 is configured to retrieve the contactinformation which the fourth user desires to provide to the third user(e.g., from the SIM in the communication device 5105). The applicationmodule 5115 is configured to send an SMS-Submit message, (e.g., shown asSMS message 5160) to the communication device 1030.

The system 5000, is configured such that before the message 5160 reachesthe communication device 1031, the message 5160 preferably goes throughintermediate processing by the network 1050. For example, the serviceprovider 1055 is configured to convert the SMS message 5160, which is anSMS-Submit message to an SMS-Deliver message (e.g., shown as the message5170). The service provider 1055 is configured to encapsulate themessage 5170 using SMPP protocol, although other protocols can be used.The service provider is configured to provide the message 5170 to thenetwork plug-in 1040. The network plug-in 1040 is configured to convertthe SMS message 5170, to an SMS-Submit message 2110 (e.g., shown asmessage 5180). Preferably, the TP-UD portion of the SMS messages 5170and 5180 are substantively identical. The service provider 1055 isconfigured to receive the SMS message 5180 and to preferably forward itto the communication device 1031 as an SMS-Deliver message 2210 (e.g.,shown as message 5130).

The network plug-in 1040 is configured to process contact informationSMS messages sent between two users, such as the first and second users.The network plug-in 1040 is configured to, e.g., after receiving acontact information SMS such as the message 5140, to retrieve the securedata in the TLV format from the TP-UD of the message 5140. The networkplug-in 1040 is configured to retrieve the TransmissionProtocol-Originating address (TP-OA) from the header of the message5140. The network plug-in 1040 is configured to retrieve theTransmission Protocol-Destination Address (TP-DA) from the TLV structureof the message 5140. The network plug-in 1040 is configured to transformthe SMS-Deliver message 5140 into the SMS-Submit message 5150. Thenetwork plug-in 1040 is configured to set the destination address in themessage 5150 using the TP-DA from the message 5140.

The network plug-in 1040 is configured to determine how the seconduser's communication device is configured. The network plug-in 1040 isconfigured to perform a lookup in the MSISDN database 1044 using theTP-DA retrieved from the message 5140 to determine if the second user'scommunication device (e.g., the communication device 1020) is registeredwith the network plug-in 1040 and if the communication device 1020 isconfigured to comply with the mobile network standards. For example, thenetwork plug-in 1040 is configured to determine whether thecommunication device 1020 includes the application module 1025 and ifso, whether the application module 1025 is in an active operation mode(e.g., “send and receive” or “receive and send”). The network plug-in1040 is configured to generate a formatted SMS message as the message5150 when the communication device 1020 has an active application module1025, and other generate a text SMS message as the message 5150. Thenetwork plug-in 1040 is configured to update, respectively, a formattedSMS message counter and a text SMS message counter. The counters can beused to track usage of the network plug-in 1040 (e.g., for billingpurposes).

In operation, with reference to FIG. 12 and further reference to FIG.11, a process 3000 for processing an incoming SMS message using thenetwork plug-in 1040 includes the stages shown. The process shown inFIG. 12, however, is exemplary only and not limiting. The process shownin FIG. 12 can be altered, e.g., by having stages added, removed,altered, and/or rearranged. While the process 3000 shows specific typesof SMS messages that can be received by the network plug-in 1040, andspecific processing that occurs, other message types can be received,and other processing can be performed. The process 3000 is describedwith reference to the communication devices 1010 and 1020, althoughother communication devices can be used.

At stage 3005, the process 3000 begins. Stage 3005 preferablycorresponds to when the network plug-in 1040 receives an incoming SMSmessage from the communication device 1010 (e.g., the message 5140). Themessage is relayed by the service provider 1055 from the applicationmodule 1015. The message 5140 is a formatted SMS message (e.g., theSMS-Deliver message 2410), although other message types can be receivedand processed.

At stage 3010, the network plug-in 1040 retrieves the security header asdefined in the 3GPP Technical Specifications 03.48 from the header ofthe SMS message (e.g., the Security Header 2367 of the SMS-Submitmessage 2310). The network plug-in 1040 is configured to parse a TARvalue contained in the security header of the incoming SMS message.

At stage 3020, the network plug-in is configured to determine what typeof SMS message the incoming SMS message is. The network plug-in 1040 isconfigured to compare the TAR value in the incoming SMS message to alist of known TAR values to determine how to further process theincoming SMS message. If the TAR value of the incoming SMS message isequal to a TAR value corresponding to a provisioning request, then theincoming SMS is a provisioning request SMS meant for centralizedblacklist processing and the process 3000 continues to stage 3030 (e.g.,see FIG. 12 and corresponding description). If the TAR value of theincoming SMS message is equal to a TAR value corresponding to contactinformation SMS messages, then the process 3000 continues to stage 3040(e.g., see FIG. 14 and corresponding description). If the TAR value ofthe incoming SMS message is equal to a TAR value corresponding to aMobileStats SMS message, then the process 3000 continues to stage 3050(e.g., see FIG. 21 and corresponding description).

In operation, with reference to FIG. 13 and further reference to FIG.11, a process 4200 for performing centralized blacklist processingincludes the stages shown. The process 4200, however, is exemplary onlyand not limiting. The process 4200 can be altered, e.g., by havingstages added, removed, altered, and/or rearranged. The process 4200 isdescribed with reference to the communication device 1010, althoughother communication devices can be used with the process 4200. Further,the process 4200 is described as if the message 5140 was determined tobe a provisioning request by the process 3000.

At stage 4210, the network plug-in 1040 parses the TAC value from theTP-UD 2465 of the message 5140.

At stage 4215, the network plug-in 1040 performs a search within theblacklist database 1042 using the TAC value as a key.

At stage 4220, if the TAC is found in the blacklist database 1042 theprocess 4200 continues to stage 4225, otherwise the process 4200continues to stage 4230.

At stage 4225 the network plug-in sets the operation mode of thecommunication device 1015 is to “Disable” or “Receive and Send.” Theoperation mode is stored in the MSISDN database 1044 in conjunction withthe creation of the provisioning response during stage 4235. The networkplug-in 1040 sends the operation mode to the corresponding applicationmodule. If the user acquires a new mobile device, the TAC value can beextracted and checked against the blacklist database 1042 to determinethe desired operation mode. From stage 4225, the process 4200 continuesto stage 4235.

At stage 4230, the network plug-in 1040 sets the operation mode of thecommunication device 1015 to “Send and Receive.” The operation mode isstored in the MSISDN database 1044 in conjunction with the creation ofthe provisioning response during stage 4235. The network plug-in 1040sends the operation mode to the corresponding application module. If theuser acquires a new mobile device, the TAC value will be extracted andchecked against the blacklist database 1042 to determine the properoperation mode.

At stage 4235, the network plug-in 1040 creates a provisioning responsecontaining the TAC value of the communication device 1015 along with theoperation mode determined during stages 4225 or 4230. The provisioningresponse is prepared using the TLV format, although other formats can beused. The tag portion of the TLV string is a single-octet identifierthat can uniquely define a parameter (e.g., a TAC value field). TheLength portion of the TLV string is preferably a single-octet indicatingthe length of the corresponding value portion of the TLV string inoctets, preferably not including the type and length fields. The valueportion of the TLV string is preferably from 1 to 32 octets in lengthand preferably contains the specific value for the parameter (e.g., aTAC value). The parameters preferably directly follow each other in thebody, which is a stream of octets.

At stage 4240, the network plug-in 1040 creates a secure SMS message,according to the 3GPP TS 03.48, and embeds the provisioning response inthe secure data part of the SMS.

At stage 4245 the network plug-in 1040 sends the secure SMS messagecontaining the provisioning response to the communication device 1010.

At stage 4250, the network plug-in 1040 updates the MSISDN database 1044and the blacklist database 1042 to indicate if the application module isenabled or disabled for a given MSISDN. Optionally, the network plug-in1040 also stores the operation mode information for each subscriberwithin the MSISDN database 1044.

In operation, with reference to FIG. 14 and with further reference toFIG. 11, a process 5400 for processing contact information included in aformatted binary SMS message environment within the network plug-in 1040includes the stages shown. The process 5400, however, is exemplary onlyand not limiting. The process 5400 can be altered, e.g., by havingstages added, removed, altered, and/or rearranged. While the process5400 is described in context of receiving and processing the SMS message5140 and creating the SMS 5150, the process 5400 can also be used toreceive and create other SMS messages (e.g., the SMS messages 5170 and5180). While the process 5400 is described in the context of providingcontact information from the communication device 1010 to thecommunication device 1020 using formatted SMS messages, othercommunication device and/or SMS types can be used. Further, the process5400 is described as if the message 5140 was determined to be thecontact information SMS message 1457 by the process 3000.

At stage 5410, the network plug-in 1040 receives the SMS message 5140,e.g., a an SMS-Deliver message that has been formatted according to the3GPP Technical Specification 03.48. The network plug-in 1040 retrievesthe secure data from the message 5140 (e.g., the TLV values that includea user's contact information). The network plug-in 1040 also retrievesthe TP-OA from the SMS header.

At stage 5415, the network plug-in 1040 retrieves the TP-DA informationfrom the message 5140.

At stage 5420, the network plug-in 1040 performs a TP-DA lookup in thedatabase 1044 to see if intended recipient (e.g., the communicationdevice 1020) is registered and is configured to comply with the desiredmobile network standards (e.g., to receive SMS messages). The networkplug-in 1040 checks if the TP-DA of the second communication device islisted in the MSISDN database 1044, although other databases can beused.

At stage 5425, the network plug-in 1040 transforms the SMS-Delivermessage 5140 into an SMS-Submit message 5150. The network plug-in 1040sets the destination address in the SMS header using the TP-DA from theSMS-Deliver message 5140.

At stage 5430 the network plug-in 1040 checks the database 1044 to seewhether the communication device 1020 has the application module 1025installed and if the application module 1025 is in the active operationmode, which is, for example, either “send and receive” or “receive andsend.” If the communication device 1020 has an active application module1025, then the process 5400 continues to stage 5435, otherwise theprocess 5400 continues to stage 5445.

At stage 5435 the formatted binary SMS transformation is made (e.g., asdescribed with respect to FIG. 15 and corresponding description).

At stage 5440, the network plug-in 1040 increases the formatted binarySMS message counter.

At stage 5445, the unformatted text SMS transformation is made (e.g., asdescribed in FIG. 16 and corresponding description).

At stage 5450, the network plug-in 1040 increases the text SMS messagecounter.

At stage 5460, the network plug-in 1040 sends the message 5150 to thecommunication device 1020 via the service provider 1055. The message5150 can be a formatted binary SMS message or a text SMS as describedabove.

In operation, with reference to FIG. 15 and further reference to FIG.11, a process 5500 for SMS message transformation from the SMS-Delivermessage 5140 to the SMS-Submit message 5150, using the network plug-in1040 includes the stages shown. The process 5500 can be altered, e.g.,by having stages added, removed, altered, and/or rearranged. Preferablythe process 5500 is executed after it has been determined that a user towhich an SMS message is destined for includes an active applicationmodule (e.g., as described with respect to the process 5400), althoughthe process 5500 can be executed at other times. Further, the belowdescription of the process 5500 assumes that the SMS being sent to andfrom the network plug-in 1040 is a formatted binary SMS message.

At stage 5505, the network plug-in 1040 creates a security headeraccording to the 3GPP Technical Specification 03.48. Preferably, the03.48 security header does not enforce any cryptographic or checksumoperations on the information, although other configurations arepossible (e.g., cryptographic and checksum operations can be enforced).The network plug-in 1040 creates the security header of message 5150(e.g., which is formatted binary SMS-Submit message 2310) based on theTAR value of the incoming message 5140 (e.g., which is a formattedbinary SMS-Deliver message 2410) and the length of the informationcontained in the SMS message (e.g., the TLV values from the secured data2465). The network plug-in 1040 updates a template security header withcorrect TAR and data length values.

At stage 5510, the network plug-in 1040 copies the TLV values from thesecured data 2465 of the message 5140 (e.g., which is a formatted binarySMS-Deliver message 2410, which is encapsulated within the SMPPprotocol) to the secured data 2365 of the message 5150 (e.g., which is aformatted binary SMS-Submit message 2310). The network plug-in 1040encapsulates the message 5150 within the SMPP protocol.

At stage 5515, the network plug-in 1040 checks the configuration betweenitself and the service provider 1055. If the configuration permits thenetwork plug-in 1040 to add a user's originating address as theoriginating address 2446 (e.g., from the formatted binary SMS-Delivermessage 2410), then the process 5500 continues to stage 5520, otherwise,the process 5500 continues to stage 5525. For example, the networkplug-in 1040 checks to determine if it can “fake” the originatingaddress in an SMS message.

At stage 5520, the network plug-in 1040 adds the originating address tothe message 5150 that corresponds to the communication device (e.g., thecommunication device 1010) that sent the message 5140 and encapsulatesthe appropriate originating address within the SMPP protocol (e.g., theoriginating address is encapsulated in the SMPP protocol because theSMS-Submit message 2310 does not include an originating address headerfield). By “faking” the originating address, the communication devicethat ultimately receives the SMS message will see the address (e.g.,telephone number) of the communication device 1010, rather than theaddress of the network plug-in 1040. The service provider 1055 uses the“faked” originating address embedded in the SMPP protocol whengenerating the SMS-Deliver message 2410.

At stage 5525, the network plug-in 1040 appends the originating address2446 (as a TLV field TLV_(OA) (e.g., which is the TLV representation fororiginating address)) to the secured data 2365 of the message 5150,rather than encapsulating the originating address in the SMPP protocol.The network plug-in 1040 notifies the application module of thereceiving communication device (e.g., the application module 1025 of thecommunication device 1020) that the correct originating address is foundin the TLV_(OA) field found within the secured data 2365, rather thanthe TP-OA field 2446 of the SMS-Deliver message 2410. Stage 5525 can beuseful, for example, to avoid a situation where the application moduleof a receiving communication device interprets an incoming SMS messageas originating from the network plug-in 1040 rather than thecommunication device that originated the SMS message.

The process 5500 can also be used when a first user sends a seconduser's contact information to a third user. For example, the user of thecommunication device 1010 can send the contact information of the userof the communication device 5115 to the user of the communication device1020. In this case, the application module 1015 is configured to preparethe SMS message 5110 and includes a tag for TLV value for the messagetype “Forward-a-Contact” (“FAC”) (e.g., TAG CELL_PHONE) within the bodyof the SMS message. The application module 1025 is configured torecognize the message type as FAC and use the TLV_CELL_PHONE as themobile number.

In operation, with reference to FIG. 16 and further reference to FIGS.11 and 17, a process 5600 for message transformation of an unformattedtext SMS message within the network plug-in 1040 includes the stagesshown. The process 5600, however, is exemplary only and not limiting.The process 5600 can be altered, e.g., by having stages added, removed,altered, and/or rearranged. The following description assumes that thefirst user application module 1015 sends the first user's contactinformation in a formatted binary SMS message towards the communicationdevice 1031. Further, the process 5600 assumes that the communicationdevice 1031 does not include an application module and that the thirduser has not been provisioned within the network plug-in 1040, althoughother configurations are possible.

At stage 5605, the network plug-in 1040 assembles the message 5180. Thenetwork plug-in 1040 takes the secured data 2465 from the message 5170(e.g., which is the formatted binary SMS-Deliver message 2410) andappends information indicative of the secured data 2465 into the TP-UD2160 of the message 5180 (e.g., which is the unformatted text SMS-Submitmessage 2110). The secured data 2465 is appended to the message 5180 asfor example, an SMS header 5305.

At stage 5610, the network plug-in 1040 locates the TLV_(MT) 5205 (e.g.,which is the TLV value for message type) in the secured data 2465 of themessage 5170 (e.g., which is a formatted binary SMS-Deliver message2410). The message type indicates whether the message 5170 is anoriginal message or not.

At stage 5615, if the message 5170 is an original message, the process5600 continues to stage 5620, otherwise, the process 5600 continues tostage 5625.

At stage 5625 the network plug-in 1040 locates the TLV_(LN) 5220 andTLV_(FN) 5215 (e.g., TLV values for LastName and FirstName,respectively) values in the TLV formatted structure of the message 5170.The network plug-in 1040 appends information indicative of the TLV_(LN)5220 and TLV_(FN) 5215 values to TP-UD 2160 of the message 5180 as aLastName field 5132 and a FirstName field 5314, respectively.

At stage 5620 the network plug-in 1040 adds a white space character 2320at the end of the SMS header text to indicate that the SMS message is a“reply” message.

At stage 5630, the network plug-in 1040 checks the configuration betweenitself and the service provider 1055. If the configuration allows thenetwork plug-in 1040 to add the first user's originating address as theoriginating address 2446 (e.g., from the message 5170), then the process5600 continues to stage 5635, otherwise the process 5600 continues tostage 5645.

At stage 5632, the network plug-in 1040 determines if the message typeof the incoming SMS message (or alternatively an outgoing SMS message)is set to FAC. If the message type is FAC, the process 5600 terminatesat stage 5633, otherwise the process 5600 proceeds to stage 5645.

At stage 5635 the network plug-in 1040 specifies the TP-OA 2446 withinthe SMPP protocol as the originating address.

At stage 5640, the network plug-in 1040 appends information to themessage 5180 as a function of the message type. If the message type isother than FAC, the network plug-in 1040 appends the TP-OA 2446 from themessage 5180 to the TP-UD 2160 of the message 5180 as a MobileNumberfield 5324. The network plug-in 1040 omits the end marker (e.g., seeFIG. 18 and associated description) after the mobile number prefix(e.g., “M:”) to, for example, indicate that the MobileNumber field 5324should not be disregarded. If the message type is FAC, the networkplug-in 1040 appends the CELL_TLV from the message 5180 and applies twoend markers after the mobile number prefix (e.g., “M:”) to indicate thatthe message type is FAC.

At stage 5645 the network plug-in 1040 appends a NEWLINE character 5310to the TP-UD 2160 and appends the originating address 2446 into theMobileNumber field 5324 which is included in the TP-UD 2160 of themessage 5180. The network plug-in 1040 also applies an end marker, whichis an optional space 5325, after the MobileNumber field 5324 (e.g., seeFIG. 18 and associated description), which can indicate that theMobileNumber field 5234 should be disregarded.

At stage 5650, the network plug-in 1040 checks if the TLV_(WN) 5230(e.g., the TLV value for WorkNumber) is present in the secured data 2465of the message 5170. If the desired information is present, the process5600 continues to stage 5655, otherwise the process 5600 continues tostage 5660.

At stage 5655, the network plug-in 1040 appends a NEWLINE character 5310to the message 5180 and appends the WorkNumber (see FIG. 18 andassociated description) into a WorkNumber field 5342 which is includedin the TP-UD 2160 of the message 5180 and applies an end marker, whichis a space 5345, after the WorkNumber 5342.

At 5660, the network plug-in 1040 checks if the TLV_(HN) 5235 (e.g., theTLV value for HomeNumber) is present in the secured data 2465 of themessage 5170. If the TLV_(HN) 5235 is present, the process 5600continues to stage 5665, otherwise, the process continues to stage 5670.

At stage 5665, the network plug-in 1040 appends a NEWLINE character 5310to the message 5180 and appends the HomeNumber into the HomeNumber field5332 which is included in the TP-UD 2160 of the message 5180 and doesnot append the end marker.

At stage 5670, the network plug-in 1040 appends an E-mail address to themessage 5180 (see FIG. 20 and associated description).

In operation, with reference to FIG. 18 and further reference to FIGS.11 and 17, a process 5700 for appending a phone number to the data partof the message 5180 (e.g., which is the unformatted text SMS-Submitmessage 2110) includes the stages shown. The process 5700, however, isexemplary only and not limiting. The process 5700 can be altered, e.g.,by having stages added, removed, altered, and/or rearranged. Portions ofthe process 5700 explain, in further detail, some of the stages shown inFIG. 16.

At stage 5705, the network plug-in 1040 decodes the Binary Coded Decimal(BCD) coded phone number, according to the 3GPP 23.040 specifications,to an ASCII representation.

At stage 5710, the network plug-in 1040 appends the ASCII representationof the BCD coded phone number to the TP-UD 2160 message 5180, e.g., asdescribed earlier with respect to FIG. 16. The originating address ofthe first user is appended to the MobileNumber field 5324, the homenumber of the first user is appended to the HomeNumber field 5332, andthe work number of the first user is appended to the WorkNumber field5342.

The network plug-in 1040 checks whether an end marker is requested atstage 5715. For example, referring to stage 5515 of the process 5500, ifthe network plug-in 1040 cannot “fake” the TP-OA from the incoming SMSheader, then the network plug-in 1040 requests an end marker (e.g.,which can signify to an application module receiving an SMS message withthe end marker that it should ignore the TP-OA 2446 in the SMS-Delivermessage 2410). If an end marker is requested, then process 5700continues to stage 5720, otherwise, the process 5700 continues to stage5725.

At stage 5720, the network plug-in 1040 appends the end marker to theTP-UD 2160 of the message 5180. The end marker for the MobileNumberfield 5324 is an optional space 2325 and for the WorkNumber field 5342is a mandatory space 5345.

At stage 5725, the network plug-in 1040 appends a NEWLINE character 5310to the TP-UD 2160 of the message 5180.

In operation, with reference to FIG. 19 and further reference to FIGS.11 and 17, a process 5800 for E-mail text transformation includes thestages shown. The process 5800, however, is exemplary only and notlimiting. The process 5800 can be altered, e.g., by having stages added,removed, altered, and/or rearranged.

At stage 5805, the network plug-in 1040 checks to see if the TLV_(PE)5240 (e.g., the TLV value for PersonalEmail) is present in the secureddata 2465 of the message 5170. If the TLV_(PE) 5420 is present, theprocess 5800 continues to stage 5810, otherwise, the process 5800continues to stage 5815.

At stage 5810, network plug-in 1040 appends information indicative ofthe TLV_(PE) of the first user (e.g., see FIG. 20 and correspondingdescription) as an Email field 5350.

At stage 5815, the network plug-in 1040 checks to see if the TLV_(BE)5245 (e.g., the TLV value for BusinessEmail) is present in the secureddata 2465 of the message 5170. If the TLV_(BE) 5245 is present, theprocess 5800 continues to stage 5820, otherwise, the process 5800 ends.

At stage 5820 the network plug-in 1040 appends information indicative ofthe TVL_(BE) of the first user to as the Email field 5350 and includesan optional white space 5355 (e.g., see FIG. 20 and correspondingdescription). If the Email field 5350 has already been generated becausethe network plug-in 1040 appended information indicative of theTLV_(PE), the network plug-in 1040 appends an additional e-mail field tothe text-SMS message.

In operation, with reference to FIG. 20 and with further reference toFIGS. 11 and 17, a process 5900 for appending an E-mail address includesthe stages shown. The process 5900, however, is exemplary only and notlimiting. The process 5900 can be altered, e.g., by having stages added,removed, altered, and/or rearranged.

At stage 5905, the network plug-in 1040 appends information indicativeof the Email text to the TP-UD 2160 of the message 5180.

At stage 5910 the network plug-in 1040 checks to see if an optionalwhite space 5355 is desired (e.g., if the E-mail address is a businessaddress). If the optional white space 5355 is desired the process 5900continues to stage 5915, otherwise, the process continues to stage 5920

At stage 5915, the network plug-in 1040 appends the white space 5355after the Email field 5350 to the TP-UD 2160 of the message 5180.

At stage 5920 the network plug-in 1040 appends the NEWLINE character5310 after the Email field 5350 to the TP-UD 2160 of the message 5180.

In operation, with reference to FIG. 21 with further reference to FIG.11, a process 6000 for receiving the MobileStats SMS message 1458 usingthe network plug-in 1040 includes the stages shown. The process 6000,however, is exemplary only and not limiting. The process 6000 can bealtered, e.g., by having stages added, removed, altered, and/orrearranged. The process 6000 is described as if the MobileStats SMSmessage 1458 is the formatted binary SMS-Deliver message 2410, althoughother message types can be processed. Further, the process 6000 isdescribed as if the message 5140 was determined to be the MobileStatsSMS message 1458 by the process 3000.

At stage 6005 the network plug-in 1040 retrieves the TLV-coded securedata part of the MobileStats SMS message 1458.

At stage 6010 the network plug-in 1040 parses the TLV elements from theMobileStats SMS message 1458.

At stage 6015 the network plug-in 1040 creates a new entry in thestatistics storage 1046.

At stage 6020 the network plug-in 1040 is sends a notification to therepository 1080 indicating that new MobileStats information isavailable.

At stage 6025 the network plug-in 1040 stores the originating address,the time stamp, and the TLV values in entry created in the statisticsstorage 1046.

Other embodiments are within the scope and spirit of the invention. Forexample, due to the nature of software, functions described above can beimplemented using software, hardware, firmware, hardwiring, orcombinations of any of these. Features implementing functions may alsobe physically located at various positions, including being distributedsuch that portions of functions are implemented at different physicallocations.

As described above, the network plug-in 1040 is configured to send oneor more types of messages that include contact information to recipientcommunication devices. The network plug-in 1040, can also be configuredto send a vCard to a recipient communication device. For example, thenetwork plug in 1040 can be configured to determine if the recipientcommunication device is configured to receive and process vCards. Thenetwork plug-in 1040 is configured to check the IMEI database todetermine if the recipient communication device is configured to accepta vCard. Using the information from the IMEI database, the networkplug-in 1040 can determine if it is desired to send a vCard instead of aFormatted Binary SMS message to a recipient communication device.

While the network plug-in 1040 has been described as sending a user'scontact information to a communication device, contact or otherinformation can be sent to other devices and/or systems as well. Forexample, the network plug-in 1040 can be configured to send contactinformation to a personal computer as, for example, an e-mail. Forexample, the system 1000, can be configured such that after thecommunication device 1020 receives contact information from thecommunication device 1010, the communication device 1020 can prompt thesecond user to forward/send the contact information of the first user tothe second user's personal computer. The application module 1025 isconfigured to send an SMS message to the network plug-in 1040 in whichthe second user's e-mail address is appended to the SMS message. Thenetwork plug-in 1040 is configured to recognize that the SMS message isintended for the second user's personal computer, and is configured tosend an e-mail to the second user's personal computer that includes thecontact information that is included in the SMS message. Upon receivingthe e-mail containing the contact information, an application on thepersonal computer (e.g., Microsoft Outlook®) can receive the contactinformation e-mail add the first user's contact information to a contactlist that is part of the application.

Further, while the description above refers to the invention, thedescription may include more than one invention.

1. A computer program product residing on a computer readable medium andcomprising computer readable instructions configured to cause a computerto: access a memory storing information indicative of communicationdevices that are configured to process a short message service (SMS)message of a first type; receive an SMS message of the first type from afirst communication device, wherein the received SMS message includescontact information related to a user of the first communication device;analyze the received SMS message to determine information indicative ofa destination address of the SMS message, the destination addresscorresponding to a second communication device; determine whether thesecond communication device is configured to receive SMS messages of thefirst type using the information indicative of the destination addressand the information stored in the memory; send an outgoing SMS messageto the second communication device wherein: the outgoing SMS message isof the first type if it is determined that the second communicationdevice is configured to receive SMS messages of the first type; and theoutgoing SMS message is of a second type if it is determined that thesecond communication device is not configured to receive SMS messages ofthe first type.
 2. The computer program product of claim 1 wherein thecomputer readable instructions are further configured to cause thecomputer to generate the outgoing SMS using the contact informationrelated to the user of the first communication device.
 3. The computerprogram product of claim 2 wherein the computer readable instructionsare further configured to cause the computer to include informationindicative of the contact information related to the user of the firstcommunication device in the outgoing SMS.
 4. The computer programproduct of claim 3 wherein the computer readable instructions arefurther configured to cause the computer to generate a formatted binarySMS message as the SMS message of the first type.
 5. The computerprogram product of claim 4 wherein the computer readable instructionsare further configured to cause the computer to format the informationindicative of the contact information related to the user of the firstcommunication device in a tag-length-value format.
 6. The computerprogram product of claim 3 wherein the computer readable instructionsare further configured to cause the computer to generate an unformattedtext SMS message as the SMS message of the second type.
 7. The computerprogram product of claim 6 wherein the computer readable instructionsare further configured to cause the computer to format the informationindicative of the contact information related to the user of the firstcommunication device using a plurality of text stings arranged in apredetermined format such that the second communication device canidentify a characteristic related to the information related to theinformation indicative of the contact information related to the firstuser.
 8. The computer program product of claim 3 wherein the computerreadable instructions are further configured to cause the computer togenerate a vCard as the SMS message of the second type.
 9. The computerprogram product of claim 3 wherein the computer readable instructionsare further configured to cause the computer to generate aforward-a-contact message as the outgoing SMS message.
 10. The computerprogram product of claim 1 wherein the computer readable instructionsare further configured to cause the computer to process initializationrequests from the first communication device.
 11. The computer programproduct of claim 10 wherein the computer readable instructions arefurther configured to cause the computer to parse a type allocation codefrom the initialization request and to determine an operation mode ofthe first communication device using the type allocation code and theinformation stored in the memory.
 12. The computer program product ofclaim 11 wherein the computer readable instructions are furtherconfigured to cause the computer to prepare an initialization responsethat includes information indicative of the operation mode and to sendthe initialization response to the first communication device.
 13. Thecomputer program product of claim 1 wherein the computer readableinstructions are further configured to cause the computer to process astatistical SMS message including information indicative of usagecharacteristics of the computer.
 14. The computer program product ofclaim 13 wherein the computer readable instructions are furtherconfigured to cause the computer to parse the information included inthe statistical SMS message and to store the information in the memory.15. The method of claim 11 further comprising preparing aninitialization response that includes information indicative of theoperation mode and sending the initialization response to the firstcommunication device.